package com.biyu.monitormanage.common.utils;

import com.baomidou.mybatisplus.core.metadata.IPage;
import lombok.Data;

import java.io.Serializable;
import java.util.List;
import java.util.Map;

/**
 * 分页工具类
 *
 * @author biyubing
 * @email byb15491665510220@163.com
 */
@Data
public class PageUtils implements Serializable {
    private static final long serialVersionUID = 1L;

    private static final String TOTAL_COUNT = "totalCount";
    private static final String PAGE_SIZE = "pageSize";
    private static final String CURR_PAGE = "currPage";

    /**
     * 总记录数
     */
    private int totalCount;
    /**
     * 每页记录数
     */
    private int pageSize;
    /**
     * 总页数
     */
    private int totalPage;
    /**
     * 当前页数
     */
    private int currPage;
    /**
     * 列表数据
     */
    private List<?> list;

    /**
     * 分页
     * @param list 列表数据
     * @param params 参数集合
     */
    public PageUtils(List<?> list, Map<String, Object> params) {
        this.list = list;
        this.totalCount = (Integer) params.get(TOTAL_COUNT);
        this.pageSize = (Integer) params.get(PAGE_SIZE);
        this.currPage = (Integer) params.get(CURR_PAGE);
        this.totalPage = (int)Math.ceil((double)totalCount/pageSize);
    }

    /**
     * 分页
     * @param list 列表数据
     * @param page 参数集合
     */
    public PageUtils(List<?> list, IPage<?> page) {
        this.list = list;
        this.totalCount = (int)page.getTotal();
        this.pageSize = (int)page.getSize();
        this.currPage = (int)page.getCurrent();
        this.totalPage = (int)Math.ceil((double)totalCount/pageSize);
    }

    /**
     * 分页
     * @param list        列表数据
     * @param totalCount  总记录数
     * @param pageSize    每页记录数
     * @param currPage    当前页数
     */
    public PageUtils(List<?> list, int totalCount, int pageSize, int currPage) {
        this.list = list;
        this.totalCount = totalCount;
        this.pageSize = pageSize;
        this.currPage = currPage;
        this.totalPage = (int)Math.ceil((double)totalCount/pageSize);
    }

    /**
     * 分页
     */
    public PageUtils(IPage<?> page) {
        this.list = page.getRecords();
        this.totalCount = (int)page.getTotal();
        this.pageSize = (int)page.getSize();
        this.currPage = (int)page.getCurrent();
        this.totalPage = (int)page.getPages();
    }

}
